////////////////////////////////////////////////
// 不依赖中间页面
// 吴野
// 2023-01-13 13:16:54
////////////////////////////////////////////////
/**
 * 通用混合
 **/
// 配置
import Setting from '@/setting.js';
import { frameInRoutes } from '@/router/routes';
// 方法
import { getHeaderName, getMenuSider, getSiderSubmenu } from '@/libs/system';
export default {
    data() {
        return {
            menuSider: null,
            menuHeader: null
        }
    },
    methods: {
        // 当 $route 更新时触发
        appRouteChange(to, from) {
            if (this.menuSider) {
                this.initSider(to, from)
            } else {
                this.setMenu(() => {
                    this.initSider(to, from)
                })
            }
        },
        initSider(to, from) {
            let path = to.matched[to.matched.length - 1].path;
            if (!Setting.dynamicSiderMenu) {
                let headerName = getHeaderName(path, this.menuSider)
                if (headerName === null) {
                    path = to.path;
                    headerName = getHeaderName(path, this.menuSider);
                }
                if (headerName !== null) {
                    this.$store.commit('admin/menu/setHeaderName', headerName);
                    this.changeSider(headerName)
                    // 高亮子菜单
                    this.$store.commit('admin/menu/setActivePath', to.path);
                    // 打开默认选中菜单
                    const openNames = getSiderSubmenu(path, this.menuSider);
                    this.$store.commit('admin/menu/setOpenNames', openNames);
                }

            }
        },


        initApp() {
            // TODO 拦截token并存储
            icu.cookies.set('token', '我是一直小小鸟')
            // 处理路由 得到每一级的路由设置
            this.$store.commit('admin/page/init', frameInRoutes);
            // 加载用户登录的数据
            this.$http.$get('loadUserInfo', { params: {} }).then(res => {
                if (res.code == 200) {
                    this.$store.dispatch('admin/user/set', res.data, { root: true });
                }
            })
            // 设置顶栏菜单
            this.setMenu()
            // 初始化全屏监听
            this.$store.dispatch('admin/layout/listenFullscreen')
            // 加载所有侧边栏
        },
        setMenu(cb) {
            this.$http.$get('loadMenu', { params: {} }).then(res => {
                if (res.code == 200) {
                    this.menuHeader = res.data.header;
                    this.menuSider = res.data.sider;
                    this.$store.commit('admin/menu/setHeader', this.menuHeader);
                    this.$store.commit('admin/menu/setMenuSider', this.menuSider);
                    if (cb) {
                        cb()
                    }
                }
            })
        },
        changeSider(headerName) {
            // 查询侧边栏菜单，并设置渲染
            const filterMenuSider = getMenuSider(this.menuSider, headerName);
            this.$store.commit('admin/menu/setSider', filterMenuSider);
        }
    }
}